Een component maken
Home

Een component maken

Een component maken

Maken van PHP componenten is een geweldige manier om je werk te delen met de grotere PHP gemeenschap. Maar daarnaast is het ook geweldig om je eigen applicaties te verdelen als packages die door Composer geïnstalleerd kunnen worden

Bronnen

Lorna Jane Mitchell, Intermediate PHP: Publish your own packages with Composer, How to package up your own repositories for use via PHP's Composer. Video, July 1, 2014

Probleem

Een PHP app wordt al snel een onoverzichtelijk kluwen van bestanden, klassen en namespaces.

Design

Elke PHP component gebruikt een wereldwijd unieke combinatie van leveranciersnaam en pakketnaam. Voor de pakketnaam en leveranciersnaam gebruik je best kleine letters. De naam van een leverancier is het merk of de identiteit waartoe een onderdeel behoort. Veel van mijn eigen PHP componenten dragen de naam van de leverancier modernways omdat dit de naam van mijn bedrijf is.

Zoek eerst op Packagist vooraleer een naam te kiezen om na te gaan als de naam nog niet gebruikt wordt door een andere ontwikkelaar.

Structuur van het bestandssysteem

PHP componenten hebben een gestandardiseerde bestandstructuur:

Naam Beschrijving
src/ This directory contains the component’s source code (e.g., PHP class files).
tests/ This directory contains the component’s tests. We will not use this directory in this example.
composer.json This is the Composer configuration file. This file describes the component and tells Composer’s autoloader to map your component’s PSR-4 namespace to the src/ directory.
README.md This Markdown file provides helpful information about this component, including its name, description, author, usage, contributor guidelines, software license, and credits.
CONTRIBUTING.md This Markdown file describes how others can contribute to this component.
LICENSE This plain-text file contains the component’s software license.
CHANGELOG.md This Markdown file lists changes introduced in each new component version.

Oplossing

Je pakket samenstellen

Het composer.json bestand is vereist en moet geldige JSON bevatten. Het bevat informatie die door Composer wordt gebruikt de PHP-component te vinden, te installeren, en te autoloaden .

Het bevat ook informatie voor de Packagist folderlijst.

De Dialog component van ModernWays heeft het volgende composer.json bestand:

{
    "name": "modernways/dialog",
    "type": "library",
    "description": "The Dialog component consists of classes to implement a notice board that can be used in all sort of applications",
    "keywords": ["feedback", "notice", "notice board", "message", "errormessage"],
    "homepage": "http://modernways.be/",
    "license": "MIT",
    "authors": [
        {
            "name": "Jef Inghelbrecht",
            "email": "jef.inghelbrecht@inantwerpen.com",
            "homepage": "http://inantwerpen.com/"
        }
    ],
    "require": {
        "php": ">=5.6.0",

   "modernways/dialog": "1.2"

     },
    "autoload": {
        "psr-4": {
            "ModernWays\\Dialog": "src/"
        }
    }
}

Voor meer details over het composer.json schema zie getcomposer.org.

Het README bestand

Gebruikers maken meestal via het Leesmij-bestand voor het eerst kennis met de component. Dit geldt met name voor onderdelen gehost op GitHub en Bitbucket. Daarom is het belangrijk dat README bestand, minimaal, deze informatie bevat:

GitHub en Bitbucket kunnen README-bestanden in Markdown formaat weergeven. Dit betekent dat je goed opgemaakte README-bestanden met koppen, lijsten, koppelingen en afbeeldingen kunt schrijven. Om van die mogelijkheid gebruik te makenmoet de bestandsextensie .md of .markdown zijn. Hetzelfde principe geldt voor de CONTRIBUTING en CHANGELOG bestanden. Meer informatie over het Markdown formaat op Daring Fireball.

Hier is ons voorbeeld:

Commit de app

We hebben een repo aangemaakt op BitBucket.

Publish It

Login or register on this site, then hit the submit button in the menu.

Once you entered your public repository URL in there, your package will be automatically crawled periodically. You just have to make sure you keep the composer.json file up to date.

JI
2016-12-10 18:55:38